package cc.rengu.igas.share.facade.bean.cups;

import cc.rengu.oltp.service.common.enums.OltpRpcdEnum;
import cc.rengu.oltp.service.model.BizException;

import java.util.Arrays;

/**
 * F60.2.5  终端类型，其含义需要和 Subfield60.2.9 交互方式配合使用
 *
 * @author fangminwei
 * @date 2021/4/17
 */
@SuppressWarnings("AlibabaEnumConstantsMustHaveComment")
public enum F60_2_5_TransactionChannelTypeEnum {
    _00("00", "未知"),
    _01("01", "自动柜员机（含ATM和CDM）"),
    _02("02", "保留使用"),
    _03("03", "有线销售点终端（POS）"),
    _04("04", "保留使用"),
    _05("05", "多媒体终端"),
    _06("06", "银行柜台和柜面"),
    _07("07", "个人电脑"),
    _08("08", "手机设备"),
    _09("09", "I型固定电话"),
    _10("10", "保留使用"),
    _11("11", "无线销售点终端（移动POS）"),
    _12("12", "中国银联公共服务平台"),
    _13("13", "农民工银行卡特色服务"),
    _14("14", "商户系统"),
    _15("15", "第三方机构系统（目前主要是渠道接入机构）"),
    _16("16", "数字机顶盒"),
    _17("17", "II型固定电话"),
    _18("18", "保留使用"),
    _19("19", "保留使用"),
    _20("20", "批量文件处理系统"),
    _21("21", "保留使用"),
    _22("22", "音频刷卡支付终端（VI-POS）"),
    _23("23", "mPOS"),
    // 24~99	保留使用
    ;

    private String code;
    private String desc;

    F60_2_5_TransactionChannelTypeEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public String getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return code + "-" + desc;
    }

    public static F60_2_5_TransactionChannelTypeEnum find(String code) {
        F60_2_5_TransactionChannelTypeEnum result = Arrays.stream(F60_2_5_TransactionChannelTypeEnum.values())
                .filter(e -> e.getCode().equals(code)).findFirst().orElse(null);

        if (result == null) {
            throw new BizException(OltpRpcdEnum.PARAM_IS_EMPTY_OR_NULL.getRespCode(), "找不到对应的枚举信息" + code);
        }
        return result;
    }
}
